<template>
	<view>
		<view class="content" @touchstart="hideDrawer">
			<scroll-view class="msg-list"  scroll-y :scroll-with-animation="scrollAnimation" :scroll-top="scrollTop" :scroll-into-view="scrollToView" @scrolltoupper="loadHistory" upper-threshold="50">
				
				<!-- 加载历史数据waitingUI -->
				<view v-if="loadingType" class="loading">
					<view class="spinner">
						<view class="rect1"></view>
						<view class="rect2"></view>
						<view class="rect3"></view>
						<view class="rect4"></view>
						<view class="rect5"></view>
					</view>
				</view>
				<view class="row" v-for="(row,index) in msgList" :key="index" :id="'msg'+row.msgId">
					<!-- 系统消息 -->
					<block v-if="row.type=='system'" >
						<view class="system">
							<!-- 文字消息 -->
							<view v-if="row.msg.type=='text'" class="text">
								{{row.msg.content.text}}
							</view>
							<!-- 领取红包消息 -->
							<view v-if="row.msg.type=='redEnvelope'" class="red-envelope">
								<image src="/static/img/red-envelope-chat.png"></image>
								{{row.msg.content.text}}
							</view>
						</view>
					</block>
					<!-- 用户消息 -->
					<block>
						<!-- 自己发出的消息 -->
						<view class="my" v-if="row.isSelf">
							<!-- 左-消息 -->
							<view class="left">
								<!-- 右-用户名称-时间-消息 -->
								<view class="username">
									<view class="time">{{msToDate(row.timestamp)}}</view><view class="name">{{row.nickName}}</view> 
								</view>
								<!-- 文字消息 -->
								<view v-if="row.elemType=='1'" class="bubble">
									<rich-text :nodes="row.elem.text"></rich-text>
								</view>
								<!-- 语言消息 -->
								<view v-if="row.elemType=='4'" class="bubble voice" @tap="playVoice(row)" :class="playMsgid == row.msgId?'play':''">
									<view class="length">{{row.elem.duration}}</view>
									<view class="icon my-voice"></view>
								</view>
								<!-- 图片消息 -->
								<view v-if="row.elemType=='3'" class="bubble img" style="position: relative;" @tap="showPic(row)">
									
									<u-image :key="row.timestamp" :src="row.elem.imageList[2].path+'?timestamp='+row.timestamp" @error="imgError(index)" :width="row.elem.imageList[2].width+'rpx'" :height="row.elem.imageList[2].height+'rpx'"></u-image>
									<!-- <image :src="row.elem.imageList[0].path+'?timestamp='+row.timestamp" :style="{width:row.elem.imageList[1].width+'rpx'}" mode="widthFix"></image> -->
								</view>
								<!-- 红包 -->
								<!-- <view v-if="row.msg.type=='redEnvelope'" class="bubble red-envelope" @tap="openRedEnvelope(row.msg,index)">
									<image src="/static/img/red-envelope.png"></image>
									<view class="tis"> -->
										<!-- 点击开红包 -->
									<!-- </view>
									<view class="blessing">
										{{row.msg.content.blessing}}
									</view>
								</view> -->
								
							</view>
							<!-- 右-头像 -->
							<view class="right" style="border-radius: 50%;overflow: hidden;">
								<u-image style="border-radius: 50%;" :src="faceUrlImage(row.faceUrl)||'/static/images/tab-home.jpg'"></u-image>
							</view>
						</view>
						<!-- 别人发出的消息 -->
						<view class="other" v-if="!row.isSelf">
							<!-- 左-头像 -->
							<view class="left" style="border-radius: 50%;overflow: hidden;">
								<u-image :src="faceUrlImage(row.faceUrl)||'/static/images/tab-home.jpg'" style="border-radius: 50%;"></u-image>
							</view>
							<!-- 右-用户名称-时间-消息 -->
							<view class="right">
								<view class="username">
									<view class="name">{{row.nickName}}</view> <view class="time">{{msToDate(row.timestamp)}}</view>
								</view>
								<!-- 文字消息 -->
								<view v-if="row.elemType=='1'" class="bubble">
									<rich-text :nodes="row.elem.text"></rich-text>
								</view>
								<!-- 语音消息 -->
								<view v-if="row.elemType=='4'" class="bubble voice" @tap="playVoice(row)" :class="playMsgid == row.msgId?'play':''">
									<view class="icon other-voice"></view>
									<view class="length">{{row.elem.duration}}</view>
								</view>
								<!-- 图片消息 -->
								<view v-if="row.elemType=='3'" class="bubble img" @tap="showPic(row)">
									<u-image  :src="row.elem.imageList[2].path+'?timestamp='+row.timestamp" :key="row.timestamp" @error="imgError(index)" :width="row.elem.imageList[2].width+'rpx'" :height="row.elem.imageList[2].height+'rpx'"></u-image>
								</view>
								<!-- 自定义消息 -->
								<view v-if="row.elemType=='2'&&row.elem.customMsg.order" class="bubble" >
									<view>
										{{row.elem.customMsg.order.team_name}}团队在与您沟通之后，下了一笔【{{typeText[row.elem.customMsg.order.type]}}】尾款单，金额为{{row.elem.customMsg.order.price}}元，付款后律师可继续为您执行后续服务，请您前往支付 <text @click="toNav(row.elem.customMsg.order)" style="color: #007AFF;">【点击查看】</text>
									</view>
									
								</view>
								<!-- 红包 -->
								<!-- <view v-if="row.msg.type=='redEnvelope'" class="bubble red-envelope" @tap="openRedEnvelope(row.msg,index)">
									<image src="/static/img/red-envelope.png"></image>
									<view class="tis"> -->
										<!-- 点击开红包 -->
									<!-- </view>
									<view class="blessing">
										{{row.msg.content.blessing}}
									</view>
								</view> -->
							</view>
						</view>
					</block>
				</view>
			</scroll-view>
			
		</view>
		<!-- 抽屉栏 -->
		<view class="popup-layer" :class="popupLayerClass" @touchmove.stop.prevent="discard">
			<!-- 表情 --> 
			<swiper class="emoji-swiper" :class="{hidden:hideEmoji}" indicator-dots="true" duration="150">
				<swiper-item v-for="(page,pid) in emojiList" :key="pid">
					<view v-for="(em,eid) in page" :key="eid" @tap="addEmoji(em)">
						<u-image mode="widthFix" :src="'/static/img/emoji/'+em.url"></u-image>
					</view>
				</swiper-item>
			</swiper>
			<!-- 更多功能 相册-拍照-红包 -->
			<view class="more-layer" :class="{hidden:hideMore}">
				<view class="list">
					<view class="box" @tap="chooseImage"><view class="icon tupian2"></view></view>
					<view class="box" @tap="camera"><view class="icon paizhao"></view></view>
					<!-- <view class="box" @tap="handRedEnvelopes"><view class="icon hongbao"></view></view> -->
				</view>
			</view>
		</view>
		<!-- 底部输入栏 -->
		<view class="input-box" :class="popupLayerClass" @touchmove.stop.prevent="discard">
			<!-- H5下不能录音，输入栏布局改动一下 -->
			<!-- #ifndef H5 -->
			<view class="voice">
				<!-- <view class="icon" :class="isVoice?'jianpan':'yuyin'" @tap="switchVoice"></view> -->
			</view>
			<!-- #endif -->
			<!-- #ifdef H5 -->
			<view class="more" @tap="showMore">
				<view class="icon add"></view>
			</view>
			<!-- #endif -->
			<view class="textbox">
				<view class="voice-mode" :class="[isVoice?'':'hidden',recording?'recording':'']" @touchstart="voiceBegin" @touchmove.stop.prevent="voiceIng" @touchend="voiceEnd" @touchcancel="voiceCancel">{{voiceTis}}</view>
				<view class="text-mode"  :class="isVoice?'hidden':''">
					<view class="box">
						<textarea cursor-spacing="10" auto-height="true" v-model="textMsg" @focus="textareaFocus"/>
					</view>
					<!-- <view class="em" @tap="chooseEmoji">
						<view class="icon biaoqing"></view>
					</view> -->
				</view>
			</view>
			<!-- #ifndef H5 -->
			<view class="more" @tap="showMore" style="margin: 0 20rpx;">
				<view class="icon add"></view>
			</view>
			<!-- #endif -->
			<view class="send" :class="isVoice?'hidden':''" @tap="sendText">
				<view class="btn">发送</view>
			</view>
		</view>
		<!-- 录音UI效果 -->
		<view class="record" :class="recording?'':'hidden'">
			<view class="ing" :class="willStop?'hidden':''"><view class="icon luyin2" ></view></view>
			<view class="cancel" :class="willStop?'':'hidden'"><view class="icon chehui" ></view></view>
			<view class="tis" :class="willStop?'change':''">{{recordTis}}</view>
		</view>
		<!-- 红包弹窗 -->
		<view class="windows" :class="windowsState">
			<!-- 遮罩层 -->
			<view class="mask" @touchmove.stop.prevent="discard" @tap="closeRedEnvelope"></view>
			<view class="layer" @touchmove.stop.prevent="discard">
				<view class="open-redenvelope">
					<view class="top">
						<view class="close-btn">
							<view class="icon close" @tap="closeRedEnvelope"></view>
						</view>
						<u-image src="/static/img/im/face/face_1.jpg"></u-image>
					</view>
					<view class="from">来自{{redenvelopeData.from}}</view>
					<view class="blessing">{{redenvelopeData.blessing}}</view>
					<view class="money">{{redenvelopeData.money}}</view>
					<view class="showDetails" @tap="toDetails(redenvelopeData.rid)">
						查看领取详情 <view class="icon to"></view>
					</view>
				</view>
			</view>
			
		</view>
	</view>
</template>
<script>
	import {uploadImage} from '../../api/globalApi.js'
	export default {
		data() {
			return {
				loadingType:true,
				id:'',
				msgId:'',
				//文字消息
				textMsg:'',
				//消息列表
				isHistoryLoading:false,
				scrollAnimation:false,
				scrollTop:0,
				scrollToView:'',
				msgList:[],
				msgImgList:[],
				myuid:0,
				
				//录音相关参数
				// #ifndef H5
				//H5不能录音
				RECORDER:uni.getRecorderManager(),
				// #endif
				isVoice:false,
				voiceTis:'按住 说话',
				recordTis:"手指上滑 取消发送",
				recording:false,
				willStop:false,
				initPoint:{identifier:0,Y:0},
				recordTimer:null,
				recordLength:0,
				
				//播放语音相关参数
				AUDIO:uni.createInnerAudioContext(),
				playMsgid:null,
				VoiceTimer:null,
				// 抽屉参数
				popupLayerClass:'',
				// more参数
				hideMore:true,
				//表情定义
				hideEmoji:true,
				emojiList:[
					[{"url":"100.gif",alt:"[微笑]"},{"url":"101.gif",alt:"[伤心]"},{"url":"102.gif",alt:"[美女]"},{"url":"103.gif",alt:"[发呆]"},{"url":"104.gif",alt:"[墨镜]"},{"url":"105.gif",alt:"[哭]"},{"url":"106.gif",alt:"[羞]"},{"url":"107.gif",alt:"[哑]"},{"url":"108.gif",alt:"[睡]"},{"url":"109.gif",alt:"[哭]"},{"url":"110.gif",alt:"[囧]"},{"url":"111.gif",alt:"[怒]"},{"url":"112.gif",alt:"[调皮]"},{"url":"113.gif",alt:"[笑]"},{"url":"114.gif",alt:"[惊讶]"},{"url":"115.gif",alt:"[难过]"},{"url":"116.gif",alt:"[酷]"},{"url":"117.gif",alt:"[汗]"},{"url":"118.gif",alt:"[抓狂]"},{"url":"119.gif",alt:"[吐]"},{"url":"120.gif",alt:"[笑]"},{"url":"121.gif",alt:"[快乐]"},{"url":"122.gif",alt:"[奇]"},{"url":"123.gif",alt:"[傲]"}],
					[{"url":"124.gif",alt:"[饿]"},{"url":"125.gif",alt:"[累]"},{"url":"126.gif",alt:"[吓]"},{"url":"127.gif",alt:"[汗]"},{"url":"128.gif",alt:"[高兴]"},{"url":"129.gif",alt:"[闲]"},{"url":"130.gif",alt:"[努力]"},{"url":"131.gif",alt:"[骂]"},{"url":"132.gif",alt:"[疑问]"},{"url":"133.gif",alt:"[秘密]"},{"url":"134.gif",alt:"[乱]"},{"url":"135.gif",alt:"[疯]"},{"url":"136.gif",alt:"[哀]"},{"url":"137.gif",alt:"[鬼]"},{"url":"138.gif",alt:"[打击]"},{"url":"139.gif",alt:"[bye]"},{"url":"140.gif",alt:"[汗]"},{"url":"141.gif",alt:"[抠]"},{"url":"142.gif",alt:"[鼓掌]"},{"url":"143.gif",alt:"[糟糕]"},{"url":"144.gif",alt:"[恶搞]"},{"url":"145.gif",alt:"[什么]"},{"url":"146.gif",alt:"[什么]"},{"url":"147.gif",alt:"[累]"}],
					[{"url":"148.gif",alt:"[看]"},{"url":"149.gif",alt:"[难过]"},{"url":"150.gif",alt:"[难过]"},{"url":"151.gif",alt:"[坏]"},{"url":"152.gif",alt:"[亲]"},{"url":"153.gif",alt:"[吓]"},{"url":"154.gif",alt:"[可怜]"},{"url":"155.gif",alt:"[刀]"},{"url":"156.gif",alt:"[水果]"},{"url":"157.gif",alt:"[酒]"},{"url":"158.gif",alt:"[篮球]"},{"url":"159.gif",alt:"[乒乓]"},{"url":"160.gif",alt:"[咖啡]"},{"url":"161.gif",alt:"[美食]"},{"url":"162.gif",alt:"[动物]"},{"url":"163.gif",alt:"[鲜花]"},{"url":"164.gif",alt:"[枯]"},{"url":"165.gif",alt:"[唇]"},{"url":"166.gif",alt:"[爱]"},{"url":"167.gif",alt:"[分手]"},{"url":"168.gif",alt:"[生日]"},{"url":"169.gif",alt:"[电]"},{"url":"170.gif",alt:"[炸弹]"},{"url":"171.gif",alt:"[刀子]"}],
					[{"url":"172.gif",alt:"[足球]"},{"url":"173.gif",alt:"[瓢虫]"},{"url":"174.gif",alt:"[翔]"},{"url":"175.gif",alt:"[月亮]"},{"url":"176.gif",alt:"[太阳]"},{"url":"177.gif",alt:"[礼物]"},{"url":"178.gif",alt:"[抱抱]"},{"url":"179.gif",alt:"[拇指]"},{"url":"180.gif",alt:"[贬低]"},{"url":"181.gif",alt:"[握手]"},{"url":"182.gif",alt:"[剪刀手]"},{"url":"183.gif",alt:"[抱拳]"},{"url":"184.gif",alt:"[勾引]"},{"url":"185.gif",alt:"[拳头]"},{"url":"186.gif",alt:"[小拇指]"},{"url":"187.gif",alt:"[拇指八]"},{"url":"188.gif",alt:"[食指]"},{"url":"189.gif",alt:"[ok]"},{"url":"190.gif",alt:"[情侣]"},{"url":"191.gif",alt:"[爱心]"},{"url":"192.gif",alt:"[蹦哒]"},{"url":"193.gif",alt:"[颤抖]"},{"url":"194.gif",alt:"[怄气]"},{"url":"195.gif",alt:"[跳舞]"}],
					[{"url":"196.gif",alt:"[发呆]"},{"url":"197.gif",alt:"[背着]"},{"url":"198.gif",alt:"[伸手]"},{"url":"199.gif",alt:"[耍帅]"},{"url":"200.png",alt:"[微笑]"},{"url":"201.png",alt:"[生病]"},{"url":"202.png",alt:"[哭泣]"},{"url":"203.png",alt:"[吐舌]"},{"url":"204.png",alt:"[迷糊]"},{"url":"205.png",alt:"[瞪眼]"},{"url":"206.png",alt:"[恐怖]"},{"url":"207.png",alt:"[忧愁]"},{"url":"208.png",alt:"[眨眉]"},{"url":"209.png",alt:"[闭眼]"},{"url":"210.png",alt:"[鄙视]"},{"url":"211.png",alt:"[阴暗]"},{"url":"212.png",alt:"[小鬼]"},{"url":"213.png",alt:"[礼物]"},{"url":"214.png",alt:"[拜佛]"},{"url":"215.png",alt:"[力量]"},{"url":"216.png",alt:"[金钱]"},{"url":"217.png",alt:"[蛋糕]"},{"url":"218.png",alt:"[彩带]"},{"url":"219.png",alt:"[礼物]"},]				
				],
				//表情图片图床名称 ，由于我上传的第三方图床名称会有改变，所以有此数据来做对应，您实际应用中应该不需要
				onlineEmoji:{"100.gif":"AbNQgA.gif","101.gif":"AbN3ut.gif","102.gif":"AbNM3d.gif","103.gif":"AbN8DP.gif","104.gif":"AbNljI.gif","105.gif":"AbNtUS.gif","106.gif":"AbNGHf.gif","107.gif":"AbNYE8.gif","108.gif":"AbNaCQ.gif","109.gif":"AbNN4g.gif","110.gif":"AbN0vn.gif","111.gif":"AbNd3j.gif","112.gif":"AbNsbV.gif","113.gif":"AbNwgs.gif","114.gif":"AbNrD0.gif","115.gif":"AbNDuq.gif","116.gif":"AbNg5F.gif","117.gif":"AbN6ET.gif","118.gif":"AbNcUU.gif","119.gif":"AbNRC4.gif","120.gif":"AbNhvR.gif","121.gif":"AbNf29.gif","122.gif":"AbNW8J.gif","123.gif":"AbNob6.gif","124.gif":"AbN5K1.gif","125.gif":"AbNHUO.gif","126.gif":"AbNIDx.gif","127.gif":"AbN7VK.gif","128.gif":"AbNb5D.gif","129.gif":"AbNX2d.gif","130.gif":"AbNLPe.gif","131.gif":"AbNjxA.gif","132.gif":"AbNO8H.gif","133.gif":"AbNxKI.gif","134.gif":"AbNzrt.gif","135.gif":"AbU9Vf.gif","136.gif":"AbUSqP.gif","137.gif":"AbUCa8.gif","138.gif":"AbUkGQ.gif","139.gif":"AbUFPg.gif","140.gif":"AbUPIS.gif","141.gif":"AbUZMn.gif","142.gif":"AbUExs.gif","143.gif":"AbUA2j.gif","144.gif":"AbUMIU.gif","145.gif":"AbUerq.gif","146.gif":"AbUKaT.gif","147.gif":"AbUmq0.gif","148.gif":"AbUuZV.gif","149.gif":"AbUliF.gif","150.gif":"AbU1G4.gif","151.gif":"AbU8z9.gif","152.gif":"AbU3RJ.gif","153.gif":"AbUYs1.gif","154.gif":"AbUJMR.gif","155.gif":"AbUadK.gif","156.gif":"AbUtqx.gif","157.gif":"AbUUZ6.gif","158.gif":"AbUBJe.gif","159.gif":"AbUdIO.gif","160.gif":"AbU0iD.gif","161.gif":"AbUrzd.gif","162.gif":"AbUDRH.gif","163.gif":"AbUyQA.gif","164.gif":"AbUWo8.gif","165.gif":"AbU6sI.gif","166.gif":"AbU2eP.gif","167.gif":"AbUcLt.gif","168.gif":"AbU4Jg.gif","169.gif":"AbURdf.gif","170.gif":"AbUhFS.gif","171.gif":"AbU5WQ.gif","172.gif":"AbULwV.gif","173.gif":"AbUIzj.gif","174.gif":"AbUTQs.gif","175.gif":"AbU7yn.gif","176.gif":"AbUqe0.gif","177.gif":"AbUHLq.gif","178.gif":"AbUOoT.gif","179.gif":"AbUvYF.gif","180.gif":"AbUjFU.gif","181.gif":"AbaSSJ.gif","182.gif":"AbUxW4.gif","183.gif":"AbaCO1.gif","184.gif":"Abapl9.gif","185.gif":"Aba9yR.gif","186.gif":"AbaFw6.gif","187.gif":"Abaiex.gif","188.gif":"AbakTK.gif","189.gif":"AbaZfe.png","190.gif":"AbaEFO.gif","191.gif":"AbaVYD.gif","192.gif":"AbamSH.gif","193.gif":"AbaKOI.gif","194.gif":"Abanld.gif","195.gif":"Abau6A.gif","196.gif":"AbaQmt.gif","197.gif":"Abal0P.gif","198.gif":"AbatpQ.gif","199.gif":"Aba1Tf.gif","200.png":"Aba8k8.png","201.png":"AbaGtS.png","202.png":"AbaJfg.png","203.png":"AbaNlj.png","204.png":"Abawmq.png","205.png":"AbaU6s.png","206.png":"AbaaXn.png","207.png":"Aba000.png","208.png":"AbarkT.png","209.png":"AbastU.png","210.png":"AbaB7V.png","211.png":"Abafn1.png","212.png":"Abacp4.png","213.png":"AbayhF.png","214.png":"Abag1J.png","215.png":"Aba2c9.png","216.png":"AbaRXR.png","217.png":"Aba476.png","218.png":"Abah0x.png","219.png":"Abdg58.png"},
				//红包相关参数
				windowsState:'',
				redenvelopeData:{
					rid:null,	//红包ID
					from:null,
					face:null,
					blessing:null,
					money:null
				},
				k:0,
				progress:0,
				typeText:['图文咨询','电话咨询','文书服务','律师函','案件委托','企业服务'],
			};
		},
		methods:{
			toNav(item){
				uni.navigateTo({
					url:'/pages/order/order-detail?id='+item.id
				})
			},
			imgError(index){
				console.log(index)
				this.msgList[index].timestamp+=1;
				this.msgList[index].timestamp-=1;
			},
			faceUrlImage(url){
				return url.replace(/\\/g,"/");
			},
			getTime(t){
				return new Date(t*1000)
			},
			add0(m){
				return m<10?'0'+m:m
			},
			msToDate (msec) { 
				var time = new Date(msec*1000);
				var y = time.getFullYear();
				var m = time.getMonth()+1;
				var d = time.getDate();
				var h = time.getHours();
				var mm = time.getMinutes();
				var s = time.getSeconds();
				if (new Date(msec*1000).toDateString() === new Date().toDateString()) {
				    //今天
				    // console.log("当天");
					return this.add0(h)+':'+this.add0(mm);
				} else if (new Date(msec*1000) < new Date()){
				    //之前
				    // console.log("以前的日期");
					let data=new Date();
					let year=data.getFullYear();
					if(year>y){
						return y+'-'+this.add0(m)+'-'+this.add0(d)+' '+this.add0(h)+':'+this.add0(mm);
					}else if(year==y){
						return this.add0(m)+'-'+this.add0(d)+' '+this.add0(h)+':'+this.add0(mm);
					}
					
				}
			},
			// 接受消息(筛选处理)
			screenMsg(msg){
				//从长连接处转发给这个方法，进行筛选处理
				if(msg.type=='system'){
					// 系统消息
					switch (msg.msg.type){
						case 'text':
							this.addSystemTextMsg(msg);
							break;
						case 'redEnvelope':
							this.addSystemRedEnvelopeMsg(msg);
							break;
					}
				}else if(msg.type=='user'){
					// 用户消息
					switch (msg.msg.type){
						case 'text':
							this.addTextMsg(msg);
							break;
						case 'voice':
							this.addVoiceMsg(msg);
							break;
						case 'img':
							this.addImgMsg(msg);
							break;
						case 'redEnvelope':
							this.addRedEnvelopeMsg(msg);
							break;
					}
					console.log('用户消息');
					//非自己的消息震动
					if(msg.msg.userinfo.uid!=this.myuid){
						console.log('振动');
						uni.vibrateLong();
					}
				}
				this.$nextTick(function() {
					// 滚动到底
					this.scrollToView = 'msg'+(this.msgList.length-1)
				});
			},
			
			//触发滑动到顶部(加载历史信息记录)
			loadHistory(e){
				if(this.isHistoryLoading){
					return ;
				}
				this.isHistoryLoading = true;//参数作为进入请求标识，防止重复请求
				this.scrollAnimation = false;//关闭滑动动画
				let Viewid = this.msgList[0].msgId;//记住第一个信息ID
				this.getC2CHistoryMessageList(Viewid);
				
			},
			// 加载初始页面消息
			getMsgList(){
				// 消息列表
				let list = [
					{type:"system",msg:{id:0,type:"text",content:{text:"欢迎进入HM-chat聊天室"}}},
					{type:"user",msg:{id:1,type:"text",time:"12:56",userinfo:{uid:0,username:"大黑哥",face:"/static/img/face.jpg"},content:{text:"为什么温度会相差那么大？"}}},
					{type:"user",msg:{id:2,type:"text",time:"12:57",userinfo:{uid:1,username:"售后客服008",face:"/static/img/im/face/face_2.jpg"},content:{text:"这个是有偏差的，两个温度相差十几二十度是很正常的，如果相差五十度，那即是质量问题了。"}}},
					{type:"user",msg:{id:3,type:"voice",time:"12:59",userinfo:{uid:1,username:"售后客服008",face:"/static/img/im/face/face_2.jpg"},content:{url:"/static/voice/1.mp3",length:"00:06"}}},
					{type:"user",msg:{id:4,type:"voice",time:"13:05",userinfo:{uid:0,username:"大黑哥",face:"/static/img/face.jpg"},content:{url:"/static/voice/2.mp3",length:"00:06"}}},
					{type:"user",msg:{id:5,type:"img",time:"13:05",userinfo:{uid:0,username:"大黑哥",face:"/static/img/face.jpg"},content:{url:"/static/img/p10.jpg",w:200,h:200}}},
					{type:"user",msg:{id:6,type:"img",time:"12:59",userinfo:{uid:1,username:"售后客服008",face:"/static/img/im/face/face_2.jpg"},content:{url:"/static/img/q.jpg",w:1920,h:1080}}},
					{type:"system",msg:{id:7,type:"text",content:{text:"欢迎进入HM-chat聊天室"}}},
					
					{type:"system",msg:{id:9,type:"redEnvelope",content:{text:"售后客服008领取了你的红包"}}},
					{type:"user",msg:{id:10,type:"redEnvelope",time:"12:56",userinfo:{uid:0,username:"大黑哥",face:"/static/img/face.jpg"},content:{blessing:"恭喜发财，大吉大利，万事如意",rid:0,isReceived:false}}},
					{type:"user",msg:{id:11,type:"redEnvelope",time:"12:56",userinfo:{uid:1,username:"售后客服008",face:"/static/img/im/face/face_2.jpg"},content:{blessing:"恭喜发财",rid:1,isReceived:false}}},
				]
				// 获取消息中的图片,并处理显示尺寸
				// for(let i=0;i<list.length;i++){
				// 	if(list[i].type=='user'&&list[i].msg.type=="img"){
				// 		list[i].msg.content = this.setPicSize(list[i].msg.content);
				// 		this.msgImgList.push(list[i].msg.content.url);
				// 	}
				// }
				// this.msgList = list;
				let _this=this;
				// 滚动到底部
				this.$nextTick(function() {
					//进入页面滚动到底部
					_this.scrollTop = 9999;
					_this.$nextTick(function() {
						_this.scrollAnimation = true;
					});
					
				});
			},
			//处理图片尺寸，如果不处理宽高，新进入页面加载图片时候会闪
			setPicSize(content){
				// 让图片最长边等于设置的最大长度，短边等比例缩小，图片控件真实改变，区别于aspectFit方式。
				let maxW = uni.upx2px(350);//350是定义消息图片最大宽度
				let maxH = uni.upx2px(350);//350是定义消息图片最大高度
				if(content.w>maxW||content.h>maxH){
					let scale = content.w/content.h;
					content.w = scale>1?maxW:maxH*scale;
					content.h = scale>1?maxW/scale:maxH;
				}
				return content;
			},
			
			//更多功能(点击+弹出) 
			showMore(){
				this.isVoice = false;
				this.hideEmoji = true;
				if(this.hideMore){
					this.hideMore = false;
					this.openDrawer();
				}else{
					this.hideDrawer();
				}
			},
			// 打开抽屉
			openDrawer(){
				this.popupLayerClass = 'showLayer';
			},
			// 隐藏抽屉
			hideDrawer(){
				this.popupLayerClass = '';
				setTimeout(()=>{
					this.hideMore = true;
					this.hideEmoji = true;
				},150);
			},
			// 选择图片发送
			chooseImage(){
				this.getImage('album');
			},
			//拍照发送
			camera(){
				this.getImage('camera');
			},
			//发红包
			handRedEnvelopes(){
				uni.navigateTo({
					url:'HM-hand/HM-hand'
				});
				this.hideDrawer();
			},
			
			//选照片 or 拍照
			getImage(type){
				this.hideDrawer();
				let self=this;
				uni.chooseImage({
					sourceType:[type],
					sizeType: ['original','compressed'], //可以指定是原图还是压缩图，默认二者都有
					success:(res)=>{
						for(let i=0;i<res.tempFilePaths.length;i++){
							let imgPath = res.tempFilePaths[i];
							let imagePath =plus.io.convertLocalFileSystemURL(imgPath);
							self.$IM.Im.createImageMessage({
							    img: imagePath
							}, ret => {
								console.log('创建图片消息',ret);
							    if (ret.hasOwnProperty('status')) {
									// 发送图片消息
									uni.showLoading({
										mask:true,
										title:'正在上传'
									})
									self.$IM.Im.sendMessage({
									    receiver: self.id,
									    messageKey: ret.messageKey
									}, ret => {
										console.log('发送图片消息',ret);
										self.progress=ret.progress;
										if(ret.progress&&ret.progress==100){
											
											self.progress=0;
											// self.delprogress();
										}
									});
							    }
							});
						}
					}
				});
			},
			delprogress(){
				for(var i = this.msgList.length-1;i >= 0;i--){
				      if(this.msgList[i].status==0){
				          this.msgList.splice(i,1);
				      }
				  }
			},
			// 选择表情
			chooseEmoji(){
				this.hideMore = true;
				if(this.hideEmoji){
					this.hideEmoji = false;
					this.openDrawer();
				}else{
					this.hideDrawer();
				}
			},
			//添加表情
			addEmoji(em){
				this.textMsg+=em.alt;
			},
			
			//获取焦点，如果不是选表情ing,则关闭抽屉
			textareaFocus(){
				if(this.popupLayerClass=='showLayer' && this.hideMore == false){
					this.hideDrawer();
				}
			},
			// 发送文字消息
			sendText(){
				var self = this;
				if(self.textMsg==''){
					return
				}
				this.$IM.Im.sendC2CTextMessage({
				    text: this.textMsg,
				    userId:this.id
				}, ret => {
					console.log('发送文字消息',ret);
				    self.textMsg='';
				});
				// this.hideDrawer();//隐藏抽屉
				// if(!this.textMsg){
				// 	return;
				// }
				// let content = this.replaceEmoji(this.textMsg);
				// let msg = {text:content}
				// this.sendMsg(msg,'text');
				// this.textMsg = '';//清空输入框
			},
			//替换表情符号为图片
			replaceEmoji(str){
				let replacedStr = str.replace(/\[([^(\]|\[)]*)\]/g,(item, index)=>{
					console.log("item: " + item);
					for(let i=0;i<this.emojiList.length;i++){
						let row = this.emojiList[i];
						for(let j=0;j<row.length;j++){
							let EM = row[j];
							if(EM.alt==item){
								//在线表情路径，图文混排必须使用网络路径，请上传一份表情到你的服务器后再替换此路径 
								//比如你上传服务器后，你的100.gif路径为https://www.xxx.com/emoji/100.gif 则替换onlinePath填写为https://www.xxx.com/emoji/
								let onlinePath = 'https://s2.ax1x.com/2019/04/12/'
								let imgstr = '<img src="'+onlinePath+this.onlineEmoji[EM.url]+'">';
								console.log("imgstr: " + imgstr);
								return imgstr;
							}
						}
					}
				});
				return '<div style="display: flex;align-items: center;word-wrap:break-word;">'+replacedStr+'</div>';
			},
			
			// 发送消息
			sendMsg(content,type){
				//实际应用中，此处应该提交长连接，模板仅做本地处理。
				var nowDate = new Date();
				let lastid = this.msgList[this.msgList.length-1].msg.id;
				lastid++;
				let msg = {type:'user',msg:{id:lastid,time:nowDate.getHours()+":"+nowDate.getMinutes(),type:type,userinfo:{uid:0,username:"大黑哥",face:"/static/img/face.jpg"},content:content}}
				// 发送消息
				this.screenMsg(msg);
				// 定时器模拟对方回复,三秒
				setTimeout(()=>{
					lastid = this.msgList[this.msgList.length-1].msg.id;
					lastid++;
					msg = {type:'user',msg:{id:lastid,time:nowDate.getHours()+":"+nowDate.getMinutes(),type:type,userinfo:{uid:1,username:"售后客服008",face:"/static/img/im/face/face_2.jpg"},content:content}}
					// 本地模拟发送消息
					this.screenMsg(msg);
				},3000)
			},
			
			// 添加文字消息到列表
			addTextMsg(msg){
				this.msgList.push(msg);
			},
			// 添加语音消息到列表
			addVoiceMsg(msg){
				this.msgList.push(msg);
			},
			// 添加图片消息到列表
			addImgMsg(msg){
				msg.msg.content = this.setPicSize(msg.msg.content);
				this.msgImgList.push(msg.msg.content.url);
				this.msgList.push(msg);
			},
			addRedEnvelopeMsg(msg){
				this.msgList.push(msg);
			},
			// 添加系统文字消息到列表
			addSystemTextMsg(msg){
				this.msgList.push(msg);
			},
			// 添加系统红包消息到列表
			addSystemRedEnvelopeMsg(msg){
				this.msgList.push(msg);
			},
			// 打开红包
			openRedEnvelope(msg,index){
				let rid = msg.content.rid;
				uni.showLoading({
					title:'加载中...'
				});
				console.log("index: " + index);
				//模拟请求服务器效果
				setTimeout(()=>{
					//加载数据
					if(rid==0){
						this.redenvelopeData={
							rid:0,	//红包ID
							from:"大黑哥",
							face:"/static/img/im/face/face.jpg",
							blessing:"恭喜发财，大吉大利",
							money:"已领完"
						}
					}else{
						this.redenvelopeData={
							rid:1,	//红包ID
							from:"售后客服008",
							face:"/static/img/im/face/face_2.jpg",
							blessing:"恭喜发财",
							money:"0.01"
						}
						if(!msg.content.isReceived){
							// {type:"system",msg:{id:8,type:"redEnvelope",content:{text:"你领取了售后客服008的红包"}}},
							this.sendSystemMsg({text:"你领取了"+(msg.userinfo.uid==this.myuid?"自己":msg.userinfo.username)+"的红包"},'redEnvelope');
							console.log("this.msgList[index]: " + JSON.stringify(this.msgList[index]));
							this.msgList[index].msg.content.isReceived = true;
						}
					}
					uni.hideLoading();
					this.windowsState = 'show';
					
				},200)
				
			},
			// 关闭红包弹窗
			closeRedEnvelope(){
				this.windowsState = 'hide';
				setTimeout(()=>{
					this.windowsState = '';
				},200)
			},
			sendSystemMsg(content,type){
				let lastid = this.msgList[this.msgList.length-1].msg.id;
				lastid++;
				let row = {type:"system",msg:{id:lastid,type:type,content:content}};
				this.screenMsg(row)
			},
			//领取详情
			toDetails(rid){
				uni.navigateTo({
					url:'HM-details/HM-details?rid='+rid
				})
			},
			// 预览图片
			showPic(row){
				uni.previewImage({
					indicator:"none",
					current:row.elem.imageList[0].path,
					urls: [row.elem.imageList[0].path]
				});
			},
			// 播放语音
			playVoice(msg){
				let _this=this;
				this.playMsgid=msg.msgId;
				this.AUDIO.src = msg.elem.soundPath;
				console.log(msg.elem.soundPath);
				this.$nextTick(function() {
					this.AUDIO.play();
					setTimeout(()=>{
						_this.playMsgid='';
					},msg.elem.duration*1000);
				});
			},
			// 录音开始
			voiceBegin(e){
				if(e.touches.length>1){
					return ;
				}
				this.initPoint.Y = e.touches[0].clientY;
				this.initPoint.identifier = e.touches[0].identifier;
				this.RECORDER.start({format:"mp3"});//录音开始,
			},
			//录音开始UI效果
			recordBegin(e){
				this.recording = true;
				this.voiceTis='松开 结束';
				this.recordLength = 0;
				this.recordTimer = setInterval(()=>{
					this.recordLength++;
				},1000)
			},
			// 录音被打断
			voiceCancel(){
				this.recording = false;
				this.voiceTis='按住 说话';
				this.recordTis = '手指上滑 取消发送'
				this.willStop = true;//不发送录音
				this.RECORDER.stop();//录音结束
			},
			// 录音中(判断是否触发上滑取消发送)
			voiceIng(e){
				if(!this.recording){
					return;
				}
				let touche = e.touches[0];
				//上滑一个导航栏的高度触发上滑取消发送
				if(this.initPoint.Y - touche.clientY>=uni.upx2px(100)){
					this.willStop = true;
					this.recordTis = '松开手指 取消发送'
				}else{
					this.willStop = false;
					this.recordTis = '手指上滑 取消发送'
				}
			},
			// 结束录音
			voiceEnd(e){
				if(!this.recording){
					return;
				}
				this.recording = false;
				this.voiceTis='按住 说话';
				this.recordTis = '手指上滑 取消发送'
				this.RECORDER.stop();//录音结束
			},
			//录音结束(回调文件)
			recordEnd(e){
				clearInterval(this.recordTimer);
				if(!this.willStop){
					console.log("e: " + JSON.stringify(e));
					let msg = {
						length:0,
						url:e.tempFilePath
					}
					let min = parseInt(this.recordLength/60);
					let sec = this.recordLength%60;
					min = min<10?'0'+min:min;
					sec = sec<10?'0'+sec:sec;
					msg.length = min+':'+sec;
					var self = this;
					self.$IM.Im.createSoundMessage({
						path: e.tempFilePath,
						duration: this.recordLength
					}, ret => {
						console.log('创建语音消息',ret);
						if (ret.hasOwnProperty('status')) {
							self.$IM.Im.sendMessage({
							    receiver: self.id,
							    messageKey: ret.messageKey
							}, ret => {
								console.log('发送语音消息',ret);
							});
						}
						
					});
					// this.sendMsg(msg,'voice');
				}else{
					console.log('取消发送录音');
				}
				this.willStop = false;
			},
			// 切换语音/文字输入
			switchVoice(){
				this.hideDrawer();
				this.isVoice = this.isVoice?false:true;
			},
			discard(){
				return;
			},
			// 获取历史消息
			getC2CHistoryMessageList(Viewid){
				let self=this;
				self.loadingType=true;
				self.$IM.Im.getC2CHistoryMessageList({
					userId: self.id,
					count: 20,
					msgId:self.msgId
				}, ret => {
					self.loadingType=false;
					console.log('获取历史消息',ret);
					if (ret.hasOwnProperty('status')&&ret.messageList.length>0) {
						let arr=ret.messageList;
						for(var i=0;i<arr.length;i++){
							if(ret.messageList[i].elemType==2){
								ret.messageList[i].elem.customMsg=JSON.parse(arr[i].elem.customMsg);
							}
						}
						self.msgId = ret.messageList[ret.messageList.length - 1].msgId;
						ret.messageList=ret.messageList.sort((a,b)=>{return a.timestamp-b.timestamp})
						self.msgList=ret.messageList.concat(self.msgList);
						// console.log(123145,self.msgList);
						//这段代码很重要，不然每次加载历史数据都会跳到顶部
						self.$nextTick(function() {
							self.scrollToView = 'msg'+Viewid;//跳转上次的第一行信息位置
							self.$nextTick(function() {
								self.scrollAnimation = true;//恢复滚动动画
							});
							
						});
						self.isHistoryLoading = false;
					}
				});
			},
			//标记消息已读
			markC2CMessageAsRead(){
				this.$IM.Im.markC2CMessageAsRead({
				    userId: this.id,
				}, ret => {
				    console.log('标记消息已读',ret);
				});
			},
			//撤销简单消息监听
			removeSimpleMsgListener(){
				this.$IM.Im.removeSimpleMsgListener({}, ret => {
					console.log('撤销简单消息监听',ret);
				});
			}
			
		},
		onLoad(option) {
			console.log(option)
			this.id=option.userId?option.userId:'';
			this.msgId=option.msgId?option.msgId:'';
			let nickName=option.nickName?option.nickName:option.userId
			this.markC2CMessageAsRead();
			uni.setNavigationBarTitle({
			    // title: nickName+'聊天室'
			    title: nickName
			});
			let self = this;
			
			this.$IM.Im.setSimpleMsgListener({},(ret)=>{
					console.log('接收消息',ret)
					this.markC2CMessageAsRead();
			// 		if(self.id==ret.sender.userId){  this.markC2CMessageAsRead();
			// 			let timestamp=ret.msgId.split('-')[1];
			// 			let obj= {
			// 				"status": 1,
			// 				"isPeerRead": false,
			// 				"localCustomData": "",
			// 				"sender": ret.sender.userId,
			// 				"faceUrl":ret.sender.faceUrl,
			// 				"elemType": 1,
			// 				"userId": ret.sender.userId,
			// 				"isRead": false,
			// 				"nickName":ret.sender.nickName,
			// 				"msgId": ret.msgId,
			// 				"localCustomInt": 0,
			// 				"timestamp": timestamp,
			// 				"isSelf": false,
			// 				"elem": {
			// 					"text": ret.text
			// 				}
			// 			}
			// 			self.msgList.push(obj);
			// 			self.msgList=self.msgList.sort((a,b)=>{return a.timestamp-b.timestamp})
			// 			self.$nextTick(function() {
							// 滚动到底
						// 	self.scrollToView = 'msg'+msgLi[r].lastMessage.msgId
						// });
			// 		}
			})
			uni.$on('setConversationListener-HM-chat',ret => {
			   console.log('监听会话列表',ret)
			   // self.$set('mesList',ret.conversation);
			   let msgLi=ret.conversationList?ret.conversationList:[];
			   let cont=0;
			   if(self.msgList.length>10){
					cont=self.msgList.length-10
			   }
			   for(var r=0;r<msgLi.length;r++){
					if(msgLi[r].userId==self.id&&msgLi[r].lastMessage.status!=0){
						if(msgLi[r].lastMessage.elemType==2){
							msgLi[r].lastMessage.elem.customMsg=JSON.parse(msgLi[r].lastMessage.elem.customMsg);
						}
						let pushType=true;
						for(var i=self.msgList.length-1;i>=cont;i--){
							if(self.msgList[i].msgId==msgLi[r].lastMessage.msgId){
								pushType=false;
								break;
							}
						}
						if(pushType){
							self.msgList.push(msgLi[r].lastMessage);
							self.$nextTick(function() {
								// setTimeout(()=>{
									if(msgLi[r].lastMessage.elemType==3&&msgLi[r].lastMessage.sender!=self.id){
										uni.hideLoading();
									}
								// },300);
								// 滚动到底
								self.scrollToView = 'msg'+msgLi[r].lastMessage.msgId
							});
						}
						break;
					}
			   }
			   
			  
			});
			
			const eventChannel = this.getOpenerEventChannel()
			// 监听acceptDataFromOpenerPage事件，获取上一页面通过eventChannel传送到当前页面的数据
			// eventChannel.on('lastMessage', function(data) {
				self.$IM.Im.getC2CHistoryMessageList({
					userId: self.id,
					count: 20,
					msgId:''
				}, ret => {
					console.log('获取历史消息',ret);
					if (ret.hasOwnProperty('status')&&ret.messageList.length>0) {
						let arr=ret.messageList;
						for(var i=0;i<arr.length;i++){
							if(ret.messageList[i].elemType==2&&arr[i].elem.customMsg.indexOf('order')!=-1){
								ret.messageList[i].elem.customMsg=JSON.parse(arr[i].elem.customMsg);
							}
						}
						self.msgId = ret.messageList[ret.messageList.length - 1].msgId;
						// ret.messageList.splice(0,0,data);
						for(var i=0;i<ret.messageList.length;i++){
							if(ret.messageList[i].elemType==3&&ret.messageList[i].elem.imageList.length==0){
								for(var j=0;j<3;j++){
									ret.messageList[i].elem.imageList.push({
										path:ret.messageList[i].elem.imagePath,
										width:350,
										height:350
									})
								}
							}
						}
						ret.messageList=ret.messageList.sort((a,b)=>{return a.timestamp-b.timestamp})
						self.msgList = ret.messageList;
						
					}else{
						// ret.messageList.push(data);
						self.msgList = ret.messageList;
					}
					setTimeout(()=>{
						self.loadingType=false
						self.$nextTick(function() {
							// 滚动到底
							if(self.msgList.length>1){
								self.scrollToView = 'msg'+self.msgList[self.msgList.length-1].msgId
							}
						});
					},500)
				});
			// })
			// this.getMsgList();
			//语音自然播放结束
			this.AUDIO.onEnded((res)=>{
				this.playMsgid=null;
			});
			// #ifndef H5
			//录音开始事件
			this.RECORDER.onStart((e)=>{
				this.recordBegin(e);
			})
			//录音结束事件
			this.RECORDER.onStop((e)=>{
				this.recordEnd(e);
			})
			// #endif
			
		},
		onShow(){
			
			//模板借由本地缓存实现发红包效果，实际应用中请不要使用此方法。
			//
			// uni.getStorage({
			// 	key: 'redEnvelopeData',
			// 	success:  (res)=>{
			// 		console.log(res.data);
			// 		let nowDate = new Date();
			// 		let lastid = this.msgList[this.msgList.length-1].msg.id;
			// 		lastid++;
			// 		let row = {type:"user",msg:{id:lastid,type:"redEnvelope",time:nowDate.getHours()+":"+nowDate.getMinutes(),userinfo:{uid:0,username:"大黑哥",face:"/static/img/face.jpg"},content:{blessing:res.data.blessing,rid:Math.floor(Math.random()*1000+1),isReceived:false}}};
			// 		this.screenMsg(row);
			// 		uni.removeStorage({key: 'redEnvelopeData'});
			// 	}
			// });
		},
		//监听页面返回
		onBackPress(event){
			this.markC2CMessageAsRead();
			this.removeSimpleMsgListener();
			console.log(event);
			setTimeout(()=>{
				uni.switchTab({
					url:'/pages/message/message',
				})
			},100)
			return true;
		},
		onHide() {
			
		},
		destroyed() {
			// this.$IM.Im.removeSimpleMsgListener();//移除简单消息监听
			// this.$IM.Im.removeConversationListener()//移除会话监听
		}
	}
</script>
<style lang="scss">
	@import "@/static/HM-chat/css/style.scss"; 
</style>